]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
calendar: Grab key focus when user changes day
authorVolker Sobek <reklov@live.com>
Mon, 3 Mar 2014 17:14:51 +0000 (18:14 +0100)
committerVolker Sobek <reklov@live.com>
Fri, 7 Mar 2014 18:18:32 +0000 (19:18 +0100)
When the user changes the active day by mouse click or keyboard focus
plus key press on a day in the grid, always move the keyboard focus to
the newly activated day.

This basically restores functionality that was introduced in commit
31478e9fb441 but got lost again in the re-factoring in commit
cc4659f5c697.

https://bugzilla.gnome.org/show_bug.cgi?id=725606

js/ui/calendar.js

index 0a50138917301a4d4a7a6ffec3fa41d1d2b4a32c..1058e58db25b91507513584918d46ed0387c8357 100644 (file)
@@ -403,6 +403,8 @@ const Calendar = new Lang.Class({
         // Start off with the current date
         this._selectedDate = new Date();
 
+        this._shouldDateGrabFocus = false;
+
         this.actor = new St.Table({ homogeneous: false,
                                     style_class: 'calendar',
                                     reactive: true });
@@ -608,7 +610,9 @@ const Calendar = new Lang.Class({
 
             button._date = new Date(iter);
             button.connect('clicked', Lang.bind(this, function() {
+                this._shouldDateGrabFocus = true;
                 this.setDate(button._date);
+                this._shouldDateGrabFocus = false;
             }));
 
             let hasEvents = this._eventSource.hasEvents(iter);
@@ -674,8 +678,11 @@ const Calendar = new Lang.Class({
             this._rebuildCalendar();
 
         this._buttons.forEach(Lang.bind(this, function(button) {
-            if (_sameDay(button._date, this._selectedDate))
+            if (_sameDay(button._date, this._selectedDate)) {
                 button.add_style_pseudo_class('active');
+                if (this._shouldDateGrabFocus)
+                    button.grab_key_focus();
+            }
             else
                 button.remove_style_pseudo_class('active');
         }));